package com.markhsiu.mysql.packet;

public abstract class MysqlPacket {

	/**
	 * 报文格式                                                     |
	 * Header                     |       PlayLoad
	 * 3Bytes         1bytes      |       N(Length)Bytes
	 * Length         Sequence    |  
	 * (不包括Header4个字节)         |  
	 * 
	 * 报文最大长度16M,当传输的长度超过16M时，Length为2^24-1 直到最后一个报文Length < 2^24-1结束
	 * Sequence从0开始，循环使用
	 */
	public static final int HEADER_SIZE = 4;//3+1 = length + num
	public static final int PACKET_MAX = 16 * 1024 * 1024;//最大消息长度：客户端发送请求报文时所支持的最大消息长度值。一般为16M
	//Response Packets 
	public static final byte PACKET_OK = (byte)0x00;
	public static final byte PACKET_ERROR = (byte) 0xFF;
	public static final byte PACKET_EOF = (byte) 0xFE;
	public static final byte PACKET_LOAD_DATA = (byte) 0xFB; //当前为load data的响应包
	
	
	/**
	 * mysql消息的长度
	 */
	public int length;
	
	/**
	 * 消息序号,默认必须是从0开始
	 */
	public byte number = (byte)0;

	public abstract String descrption();
	
}
